package cn.edu.ncu.housinghub.entity.user;

import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.*;
import lombok.Data;

import java.time.LocalDateTime;

@Data
public class AgentVerification {
    private Long agentVerifyId;
    @NotNull(message = "用户ID不能为空")
    private Long userId;
    @NotBlank(message = "营业执照编号不能为空")
    @Pattern(regexp = "^[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}$",
             message = "营业执照编号格式错误，请输入正确的18位统一社会信用代码")
    @Size(min = 18, max = 18, message = "营业执照编号必须为18位")
    private String licenseNo; // 营业执照编号（统一社会信用代码）

    // 营业执照照片地址
    @NotBlank(message = "营业执照照片地址不能为空")
    private String licensePicPath;

    // 手机号
    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号码格式错误")
    private String phone;

    // 公司名
    @NotBlank(message = "公司名不能为空")
    private String companyName;

    // 公司职位
    @NotBlank(message = "公司地址不能为空")
    private String companyPosition;

    // 真实姓名
    @NotBlank(message = "真实姓名不能为空")
    private String realName;

    // 身份证号码
    @NotBlank(message = "身份证号码不能为空")
    @Pattern(regexp = "^[1-9]\\d{5}(18|19|20)\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$", message = "身份证号码格式错误")
    private String idCard;

    // 邮箱
    @NotBlank(message = "邮箱不能为空")
    @Email(message = "邮箱格式错误")
    private String email;

    // 城市
    @NotBlank(message = "城市不能为空")
    private String city;

    // 工作年限
    @NotNull(message = "工作年限不能为空")
    @Min(value = 0, message = "工作年限必须为正数")
    @Max(value = 30, message = "工作年限不能超过30")
    private Integer workYears;

    // 申请时间
    @NotBlank(message = "申请时间不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime applyTime;
    @Pattern(regexp = "^[0-2]$", message = "审核状态必须为[0,1,2]")  // 1-审核中 2-审核通过 0-审核未通过
    private Integer verifyStatus = 1;

    // 拒绝原因
    private String  refuseReason;

    private Boolean isDeleted = false;
}
